# 编码，解码
# 加密，解密

#  编码
#     数据转写，数据换一种形式表示；
#     用大家都知道的方式转写。场景不同。
#  解码
#     看不懂的  ---》 能看懂的。
#
#  加密
#       自己的暗号
#       abc（源码）       --》 bcd -- ；
#       python           --》qzuipo-- ；
#       当数据大量被截获  --》不安全   ；
#       勤更新规则 --》               ；
#       加密规则是确定的  -- 》秘钥    ；

#        有些算法   固定 -- 》破解时间；
#  解密


# base64  --》 编码
#  基本 64b
# GBK  --》 根据Base64 规则 --》转换为 ASCII 码
# 将所有字符都能够用 base64 这套编码 来表示

# jgcd  ： 00000000  00001100 00001111 00111110
# 底层都是二进制

# 原来的3个字节（24位）
# 用 4 个字节来表示,    每一部分都是6 位  ，2**6 == 64
# A-Za-z0-9 +/               64
# BAED

# abc
#    ASCII ：   97           98            99
#          (0110  0001)， (0110 0010) ， (0110 0011)
#            011000    010110  001001  100011
# YWJj
import base64

# res = base64.b64encode(b'abc')
res = base64.b64encode('abc'.encode('utf8'))
print(res)
#    b'YWJj'
# print(type(res))
#    <class 'bytes'>

rres = b'YWJj'.decode('utf8')
print('rres  ===  ',rres)
# #     YWJj
print(type(rres))
#     <class 'str'>

r = base64.b64decode(rres).decode('utf8')
print(r)
print(type(r))












